package com.group.three.mapper;


import com.group.three.pojo.Person;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author xueyong
 * @since 2022-11-03
 */
@Mapper
public interface PersonMapper {
    //注册
    int register(@Param("personId") Long personId, @Param("name") String personName, @Param("email") String personEmail, @Param("phone") String personPhone, @Param("password") String personPassword, @Param("role") Integer role,@Param("now") LocalDateTime now);

    //登录
    Person selectPersonByNameOrEmailOrPhone(@Param("loginname") String personName, @Param("role") Integer role);

    //user.jsp保存信息
    int updatePerson(@Param("personId") Long personId, @Param("name") String personName, @Param("email") String personEmail, @Param("phone") String personPhone, @Param("introduction") String introduction);

    //修改密码
    int updatePassword(@Param("password") String newPassword, @Param("personId") Long personId);

    //通过person_role获取不同角色的信息
    List<Person> selectListByRole(Integer role);

    //用户冻结、使用、注销状态修改
    int updateStatusByPersonId(@Param("personId") Long personId, @Param("status") Integer status);

    //跟新头像
    int updateImage(@Param("image") String personImage, @Param("personId") Long personId);

    //添加管理员
    int insertAdminRole(@Param("personId") Long personId, @Param("name") String personName, @Param("password") String personPassword, @Param("role") Integer role, @Param("status") Integer status);

    //模糊查询用户信息
    List<Person> selectInformByLikeName(@Param("name") String name, @Param("role") Integer role);

    List<Person> selectInformByLikeNameNotRole(@Param("name") String name, @Param("role") Integer role);

    //分别获取用户和管理员的所有登录日志
    List<Person> selectLogsByRole(@Param("role") Integer role, @Param("name") String name);
    List<Person> selectLogsByNotRole(@Param("role") Integer role, @Param("name") String name);

    //通过person_role获取不同用户的信息
    List<Person> selectListByNotRole(Integer role);

    //根据id查询user信息
    Person selectInformById(Long personId);
}
